import * as vscode from 'vscode';
import {dedent} from "../../../utils";

// documentation中使用了代码块，代码块中写的事makedown格式，首行不能为空
let sliderItems = [
    {
        "label": "Slider_Create",
        "insertText": dedent`
        GUI:Slider_Create(\${1:parent}, \${2:ID}, \${3:x}, \${4:y}, \${5:barimg}, \${6:pbarimg}, \${7:nimg})
        `,
        "documentation": dedent`# 创建滚动条
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数    | 必选 | 类型   | 注释             |
        | :------ | :--- | :----- | :--------------- |
        | parent  | 是   | obj    | 父节点对象       |
        | ID      | 是   | string | 唯一ID           |
        | x       | 是   | int    | 位置 横坐标      |
        | y       | 是   | int    | 位置 纵坐标      |
        | barimg  | 是   | string | 滚动条背景图片   |
        | pbarimg | 是   | string | 滚动条图片       |
        | nimg    | 是   | string | 滚动条拖动块图片 |

        - 示例代码

        \`\`\`
        local barimg = "res/private/new_setting/bg_progress.png"
        local pbarimg = "res/private/new_setting/bg_progress2.png"
        local nimg = "res/private/new_setting/icon_xdtzy_17.png"
        local Slider_progress = GUI:Slider_Create(parent, "Slider_progress", 0, 0, barimg, pbarimg, nimg)
        \`\`\`
        `
    },
    {
        "label": "Slider_loadBarTexture",
        "insertText": dedent`
        GUI:Slider_loadBarTexture(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置滚动条背景图
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型   | 注释       |
        | :----- | :--- | :----- | :--------- |
        | widget | 是   | obj    | 滚动条对象 |
        | value  | 是   | string | 背景图路径 |

        `
    },
    {
        "label": "Slider_loadProgressBarTexture",
        "insertText": dedent`
        GUI:Slider_loadProgressBarTexture(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置滚动条图片
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型   | 注释           |
        | :----- | :--- | :----- | :------------- |
        | widget | 是   | obj    | 滚动条对象     |
        | value  | 是   | string | 滚动条图片路径 |

        `
    },
    {
        "label": "Slider_loadSlidBallTextureNormal",
        "insertText": dedent`
        GUI:Slider_loadSlidBallTextureNormal(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置滚动条拖动块普通图片
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型   | 注释           |
        | :----- | :--- | :----- | :------------- |
        | widget | 是   | obj    | 滚动条对象     |
        | value  | 是   | string | 拖动块图片路径 |

        `
    },
    {
        "label": "Slider_setPercent",
        "insertText": dedent`
        GUI:Slider_setPercent(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置滚动条进度
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型 | 注释              |
        | :----- | :--- | :--- | :---------------- |
        | widget | 是   | obj  | 滚动条对象        |
        | value  | 是   | int  | 滚动条进度(0-100) |

        `
    },
    {
        "label": "Slider_getPercent",
        "insertText": dedent`
        GUI:Slider_getPercent(\${1:widget})
        `,
        "documentation": dedent`# 获得滚动条进度
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型 | 注释       |
        | :----- | :--- | :--- | :--------- |
        | widget | 是   | obj  | 滚动条对象 |

        - 返回值：滚动条进度

        `
    },
    {
        "label": "Slider_setMaxPercent",
        "insertText": dedent`
        GUI:Slider_setMaxPercent(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置滚动条最大进度值 [3.40.3版本]
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型 | 注释             |
        | :----- | :--- | :--- | :--------------- |
        | widget | 是   | obj  | 滚动条对象       |
        | value  | 是   | int  | 滚动条最大进度值 |

        `
    },
    {
        "label": "Slider_addOnEvent",
        "insertText": dedent`
        GUI:Slider_addOnEvent(\${1:widget}, \${2:eventCB})
        `,
        "documentation": dedent`# 设置滚动条触摸事件
        [在线文档](http://engine-doc.996m2.com/web/#/22/2174)

        | 参数   | 必选 | 类型     | 注释       |
        | :----- | :--- | :------- | :--------- |
        | widget | 是   | obj      | 滚动条对象 |
        | value  | 是   | function | 事件函数   |

        `
    }
]



export function getCompletionItems(): vscode.CompletionItem[] {


    const completionItems: vscode.CompletionItem[] = [];
    sliderItems.forEach((item: any) => {
        completionItems.push(createFunctionCompletionItem(item.label, item.insertText, item.documentation));
    });
    return completionItems;
}

function createFunctionCompletionItem(label: string, insertText: string, documentation?: string): vscode.CompletionItem {
    const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Function);
    item.insertText = new vscode.SnippetString(insertText);
    if (documentation) {
        item.documentation = new vscode.MarkdownString(documentation);
    }
    return item;
}
